using System;
using System.Collections.Generic;
using CUtil;

namespace CStock
{
    public interface IIndicator : IXMLSerializable //IStockObjectFloat
	{
        IDataProvider Parent { get; set; }

        IListQuotes DataClassQuotes{get;}
        IList<double> DataClassFloats {get;}
        IList<DateTime> DataClassDates{get;}
        IListQuotesBase Values  { get; set; }
        IListQuotesBase ValuesUnchecked { get; }
        IList<DateTime> ValuesDateTime { get; }
        IList<double> ValuesFloat { get; }


        double ValueOf(DateTime dt);
        double[] CloseArr{ get; }

		CUtil.IndicatorSubTypes IndicatorSubTypes{get;set;}
        int CanShowOnChart{get; set;}
		bool Intraday{get; }

		bool Evaluate_Or_CheckIfUpToDate(bool evaluate);
		IPrognosis  Prognosis{get; set;}

		string NameBase{get;set;}
		int Interval{get;set;}
		//string FileName{get;}

		int ShowOnChartNumber{get;set;}

		int StartIndex{get;set;}
		
		
		
		
		
		double [] Signals {get;set;}

		double Signal {get;set;}
		
		DateTime StartTime {get;set;}
		
		DateTime StopTime {get;set;}

		

		CUtil.IndicatorType IndicatorType{get;set;}


		CUtil.RangeType RangeType{get;set;}


		

		//bool Evaluate( DateTime MyStartDate);

		//bool Evaluate();
        bool Recalculate();
       
        IIndicator Get_FromXML_OrRecalc();



		void Evaluate_ForTradeSystem(ITradeSystem ts, IDataProvider dataClass, CUtil.TradeMoneyType tradeMoney);

		string HelpStringTip{get;}
        string HelpStringShort{get;}
		string HelpStringLong{get;}
		

		void Prognosis_Advanced(int dateIndex, bool intraday);
		void Prognosis_Standard(int dateIndex, bool intraday);


		void SetDataFromTemplate(IIndicator indTemplate);

	
		//object GetFromXML( string MyIndicatorLongName);
		//bool this.Serialize();
		bool DeleteFile();

        void SetPathForComposed(string myPath);

	}

}
